package com.asiainfo.indb;

import com.asiainfo.indb.view.InDbPanel;

import javax.swing.*;
import java.awt.*;

/**
 * @author zym
 * @date 2019-10-17 15:29
 */
public class PanelUtil {

    /**
     * 生成一行表单形式
     *
     * @param tag         tag
     * @param input       input
     * @param maxLabelLen label最大长度
     * @return 表单面板
     */
    public static JPanel generateOneGridInputPanel(String tag, JTextField input, int maxLabelLen) {
        JPanel panel = new JPanel(new BorderLayout());

        JLabel label = new JLabel(tag);
        label.setPreferredSize(new Dimension(computeLabelWidth(maxLabelLen), 0));
        label.setHorizontalAlignment(JLabel.RIGHT);
        panel.add(label, BorderLayout.WEST);
        panel.add(input, BorderLayout.CENTER);

        return panel;
    }

    /**
     * 生成一行两列的表单形式
     *
     * @param tag1   tag
     * @param input1 input
     * @param tag2   tag
     * @param input2 input
     * @return 表单
     */
    public static JPanel generateTwoGridInputPanel(String tag1, JTextField input1, String tag2, JTextField input2, int maxLabelLen) {
        JPanel panel = new JPanel(new GridLayout(1, 2, 4, 0));

        JPanel pan1 = new JPanel(new BorderLayout());
        JLabel label = new JLabel(tag1);
        label.setHorizontalAlignment(JLabel.RIGHT);
        label.setPreferredSize(new Dimension(computeLabelWidth(maxLabelLen), 0));
        pan1.add(label, BorderLayout.WEST);
        pan1.add(input1, BorderLayout.CENTER);

        JPanel pan2 = new JPanel(new BorderLayout());
        label = new JLabel(tag2);
        label.setHorizontalAlignment(JLabel.RIGHT);
        label.setPreferredSize(new Dimension(computeLabelWidth(maxLabelLen), 0));
        pan2.add(label, BorderLayout.WEST);
        pan2.add(input2, BorderLayout.CENTER);

        panel.add(pan1);
        panel.add(pan2);

        return panel;
    }

    /**
     * 因为字符长度不统一的问题，无法正确统一label的宽度，在此重新计算，统一宽度
     *
     * @param maxLen 最大长度
     * @return 最大长度
     */
    public static int computeLabelWidth(int maxLen) {
        StringBuilder builder = new StringBuilder(maxLen);
        for (int i = 0; i < maxLen; i++) {
            builder.append("亚");
        }

        return new JLabel(builder.toString()).getPreferredSize().width;
    }

    /**
     * 提示弹窗
     *
     * @param parent 父级窗口
     * @param msg    信息
     */
    public static void alert(Container parent, String msg) {
        EventQueue.invokeLater(() -> JOptionPane.showMessageDialog(parent, msg, "提示", JOptionPane.INFORMATION_MESSAGE));
    }

    /**
     * 错误弹窗
     *
     * @param parent 父级窗口
     * @param msg    信息
     */
    public static void error(Container parent, String msg) {
        EventQueue.invokeLater(() -> JOptionPane.showMessageDialog(parent, msg, "错误", JOptionPane.ERROR_MESSAGE));
    }

    /**
     * 弹出加载框
     *
     * @param owner 父级
     * @param msg   信息
     */
    public static void loading(InDbPanel owner, String msg) {

    }

    /**
     * 解除加载界面
     *
     * @param owner 父级
     */
    public static void endLoading(InDbPanel owner) {

    }

}
